package com.ijunfu.study.jdk.jdk8.date;

import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;

/**
 * @Title : TemporalAdjuster 时间调节器 示例
 * @Remarks:
 * @Author : Weizhiguo
 * @Version: 1.0.0
 * @Date : 2022-05-01
 */
public class TemporalAdjusterDemo {

    public static void main(String[] args) {
        // 1. 创建日期时间对象
        LocalDateTime now = LocalDateTime.now();

        // 2. 创建TemporalAdjuster对象，用于操作日期时间
        // 将当前日期调整为下个月一号
        TemporalAdjuster adjuster = (temporal) -> {
            LocalDateTime dateTime = (LocalDateTime) temporal;
            return dateTime.plusMonths(1)           // 增加一个月
                            .withDayOfMonth(1);     // 修改为1日
        };

        // 3. 修改日期时间
        LocalDateTime dateTime = now.with(adjuster);
        System.out.println(dateTime);

        // 4. 增加版：TemporalAdjusters
        LocalDateTime dateTime1 = now.with(TemporalAdjusters.firstDayOfNextMonth());
        System.out.println(dateTime1);
    }
}
